// let const
/**
 * ES5  var          变量提升  重复定义变量
 * 
 * ES6  let const
 * 
 * 1>没有变量提升
 * 
 * 2>不会成为顶层对象window的属性
 * 
 * 3>在同一个作用域内不能重复定义变量
 * 
 * 4>暂时性死区
 *
*/


// let a = 10;

// console.log(window.a);

// var a;
// console.log(a);
// a = 10;


// console.log(a);
// let a = 10;

// let name = "lili";

// //.....

// let name = "lixd";
// console.log(name);


//ES5  函数作用域和全局作用域

//ES6  块级作用域  {}

// if(true){
//     let a = 10;
// }

// let arr = [];
// for(let i = 0;i<4;i++){
//     arr[i] = function(){
//         console.log(i)
//     }
// }
// console.log(arr.toString());

// arr[2]();
// arr[3]();

// let i = 10;
// for(let i = 0;i<4;i++){
//     console.log(i);
//     let i = 2;    
// }
// console.log(i)

// let a = 10;
// function fun(){
//     console.log(a);
//     let a = 8;
// }

// fun();

//暂时性死区：在局部 （定义的变量）会暂时封锁在这个区域内，其他和它名字相同的变量都不可用

// const 定义的是常量,以后不能再修改,必须给初始值

// const num = 20;  //栈内存

// console.log(num);

// const obj = {  //堆内存
//     name:"lili"
// }

// obj.name = 18;

// const arr = [1,2,3];

// arr = obj

// console.log(arr);











